Maße der zentralen Tendenz und Streuung
Humboldt-Universität zu Berlin
2023-06-13
Letzte Woche haben wir…
df_biondo, und dann
knitr-Tabelle, und dann
kableExtra, mit Schriftgröße 20
| subj | item | tense | verb | gramm | acc | rt | tt |
|---|---|---|---|---|---|---|---|
| 1 | 1 | future | representarán | 1 | 1 | 840.1917 | 1596 |
| 1 | 2 | future | alzarán | 1 | 1 | 1310.1809 | 648 |
| 1 | 3 | future | centrarán | 1 | 1 | 700.2674 | 841 |
| 1 | 4 | future | coleccionarán | 1 | 1 | 650.1856 | 1337 |
| 1 | 5 | future | complementarán | 1 | 1 | 580.2159 | 1400 |
head(), knitr::kable() und kableExtra::kable_styling() nicht als Objekt speichern
df_ beginnt, was für dataframe stehtZwei Beispiele für dasselbe Problem
Speichern Sie keine knitr-Tabelle, wenn Sie wirklich einen Datenrahmen (d.h., df_…) speichern wollen. Speichern Sie stattdessen zuerst die df, und geben Sie die df in einem anderen Codeabschnitt als formatierte Tabelle aus.
| subj | item | tense | verb | gramm | acc | maß | ms |
|---|---|---|---|---|---|---|---|
| 1 | 1 | future | representarán | 1 | 1 | rt | 840.1917 |
| 1 | 1 | future | representarán | 1 | 1 | tt | 1596.0000 |
| 1 | 2 | future | alzarán | 1 | 1 | rt | 1310.1809 |
| 1 | 2 | future | alzarán | 1 | 1 | tt | 648.0000 |
| 1 | 3 | future | centrarán | 1 | 1 | rt | 700.2674 |
| 1 | 3 | future | centrarán | 1 | 1 | tt | 841.0000 |
| 1 | 4 | future | coleccionarán | 1 | 1 | rt | 650.1856 |
| 1 | 4 | future | coleccionarán | 1 | 1 | tt | 1337.0000 |
| 1 | 5 | future | complementarán | 1 | 1 | rt | 580.2159 |
| 1 | 5 | future | complementarán | 1 | 1 | tt | 1400.0000 |
Obwohl pivot_longer() funktionierte, waren die Argumente für cols = nicht ganz richtig. Wir wollen hier c() verwenden, um die relevanten Spalten aufzulisten (und nicht eine Bedingung verwenden). Außerdem müssen die Spaltennamen nicht in Anführungszeichen gesetzt werden, da sie bereits bekannte Entitäten sind.
Einrichtung:
Warum wird mein Titel (Last Resort von Papa Roach) nicht gefunden?
Wir wollen Zeilen filtern(), nicht Spalten auswählen (i.e., select()).
# A tibble: 6 × 5
artist track date_entered week rank
<chr> <chr> <date> <dbl> <dbl>
1 Papa Roach Last Resort 2000-07-29 1 75
2 Papa Roach Last Resort 2000-07-29 2 71
3 Papa Roach Last Resort 2000-07-29 3 69
4 Papa Roach Last Resort 2000-07-29 4 69
5 Papa Roach Last Resort 2000-07-29 5 66
6 Papa Roach Last Resort 2000-07-29 6 64
Die Funktion geom_density() erfordert, dass es kein ästhetisches y gibt (weil dies immer die Dichte ist). Wir wollen geom_line().
Heute werden wir…
summarise() von dplyr benutzt.by Gruppe erstelltSession > Restart R um mit einer neuen Umgebung zu beginnen.
Die deskriptive Statistik beschreibt die zentrale Tendenz, die Variabilität und die Verteilung der Daten.
manchmal auch “zusammenfassende” Statistik genannt, weil sie die beobachteten Daten zusammenfasst.
[1] 3
length() versus nrow() and n()
[1] 19
nrow() (Basis-R-Syntax), odern() (dplyr-Syntax), das werden wir später noch sehen[1] 336776
summary() erhalten| air_time | distance | |
|---|---|---|
| Min. : 20.0 | Min. : 17 | |
| 1st Qu.: 82.0 | 1st Qu.: 502 | |
| Median :129.0 | Median : 872 | |
| Mean :150.7 | Mean :1040 | |
| 3rd Qu.:192.0 | 3rd Qu.:1389 | |
| Max. :695.0 | Max. :4983 | |
| NA's :9430 | NA |
mean = Mittelwert, Durchschnitt\[ \mu = \frac{Summe\;der\;Werte} {n} \]
[1] 2
mean() verwenden, um ihren Mittelwert zu berechnen[1] 2
mean() auf eine Variable in einem Datenrahmen anwenden
$, um anzugeben, dass eine Spalte aus einem Datenrahmen ausgewählt werden soll[1] 1039.913
df_flights$distance ist vergleichbar mit df_flights %>% select(distance)median = Median, mediane Wert; der Wert in der Mitte des Datensatzes[1] 872
mode = Modalwert; der Wert, der am häufigsten in einem Datensatz vorkommtrange = Wertebereich
max() und min() den höchsten und den niedrigsten Wert ausdrucken[1] 3
[1] 1
range() druckt den niedrigsten und den höchsten Wert[1] 1 3
[1] 2
sd or \(\sigma\))ein Maß dafür, wie gestreut die Daten im Verhältnis zum Mittelwert sind
Die Standardabweichung wird sehr oft angegeben, wenn der Mittelwert angegeben wird.
um sd zu berechnen
[1] 1
\[\begin{align} \sigma & = \sqrt{\frac{(x_1-\mu)^2 + (x_2-\mu)^2 + (x_3-\mu)^2}{N-1}} \\ & = \sqrt{\frac{(3-\mu)^2 + (1-\mu)^2 + (2-\mu)^2}{N-1}} \\ & = \sqrt{\frac{(3-2)^2 + (1-2)^2 + (2-2)^2}{3-1}} \\ & = \sqrt{\frac{(1)^2 + (-1)^2 + (0)^2}{2}} \\ & = \sqrt{\frac{1 + 1 + 0}{2}} \\ & = \sqrt{\frac{2}{2}} = \sqrt{1} = 1 \end{align}\]
values2 und values3 haben den gleichen Mittelwert
CBerechnung der Standardabweichung
\[\begin{align} \sigma & = \sqrt\frac{(56-1)^2 + (56-1)^2 + (56-1)^2 + (56-1)^2 + (56-100)^2 + (56-100)^2 + (56-100)^2 + (56-100)^2 + (56-100)^2 + (56-100)^2}{n-1} \\ & = \sqrt{\frac{3025 + 3025 + 3025 + 3025 + 1936 + 1936 + 1936 + 1936 + 1936}{9-1}} \\ & = \sqrt{\frac{21780}{8}} \\ & = \sqrt{2722.5} \\ & = 52.17758 \end{align}\]
Da wir durch die Anzahl der Beobachtungen (minus 1) dividieren, wird die Standardabweichung kleiner sein, wenn wir mehr Beobachtungen haben (und daher durch eine größere Zahl dividieren) (denn wenn wir durch eine große Zahl dividieren, ist das Produkt viel kleiner)
Beispiel: Wenn wir 100 durch die Zahl 2 teilen, ist das Ergebnis 50. Wenn wir 100 durch eine größere Zahl, wie 50, teilen, ist das Ergebnis (2) kleiner.
dplyr::summarise()# A tibble: 1 × 1
N
<int>
1 336776
| mean_distance | sd_distance | N |
|---|---|---|
| 1039.913 | 733.233 | 336776 |
# A tibble: 1 × 1
range_distance
<dbl>
1 4966
air_time distance
Min. : 20.0 Min. : 17
1st Qu.: 82.0 1st Qu.: 502
Median :129.0 Median : 872
Mean :150.7 Mean :1040
3rd Qu.:192.0 3rd Qu.:1389
Max. :695.0 Max. :4983
NA's :9430
dplyr-Verb drop_na() tun.by =.by = in summarise() berechnet unsere Berechnungen auf gruppierten Teilmengen der Daten (erst ein paar Monate alt!)
# A tibble: 12 × 4
month mean_air_time mean_distance N
<dbl> <dbl> <dbl> <int>
1 9 143. 1049. 27010
2 5 146. 1049. 28128
3 7 147. 1070. 28293
4 8 148. 1069. 28756
5 10 149. 1042. 28618
6 3 149. 1023. 27902
7 6 150. 1074. 27075
8 2 151. 1008. 23611
9 4 153. 1048. 27564
10 1 154. 1014. 26398
11 11 155. 1052. 26971
12 12 163. 1076. 27020
concatenate (c())| month | carrier | mean_air_time | mean_distance | N |
|---|---|---|---|---|
| 1 | AA | 199.5433 | 1353.099 | 2724 |
| 1 | UA | 213.7022 | 1463.894 | 4590 |
| 2 | AA | 197.9195 | 1352.686 | 2399 |
| 2 | UA | 207.4393 | 1437.190 | 4157 |
| 3 | AA | 192.3532 | 1349.525 | 2741 |
| 3 | UA | 204.7959 | 1454.933 | 4909 |
| 4 | AA | 192.9615 | 1343.950 | 2649 |
| 4 | UA | 212.0633 | 1504.828 | 4978 |
| 5 | AA | 183.4554 | 1341.822 | 2749 |
| 5 | UA | 209.1620 | 1559.828 | 4890 |
| 6 | AA | 183.4868 | 1338.606 | 2683 |
| 6 | UA | 213.0440 | 1580.517 | 4885 |
| 7 | AA | 178.3669 | 1328.671 | 2769 |
| 7 | UA | 207.8638 | 1581.408 | 4971 |
| 8 | AA | 179.4030 | 1326.186 | 2819 |
| 8 | UA | 212.0912 | 1593.323 | 5085 |
| 9 | AA | 179.3695 | 1344.793 | 2568 |
| 9 | UA | 208.0990 | 1571.911 | 4636 |
| 10 | AA | 186.8477 | 1337.230 | 2699 |
| 10 | UA | 210.3654 | 1528.576 | 5035 |
| 11 | AA | 193.3208 | 1344.323 | 2550 |
| 11 | UA | 218.2343 | 1534.453 | 4827 |
| 12 | AA | 200.7724 | 1361.288 | 2597 |
| 12 | UA | 224.2924 | 1546.725 | 4819 |
group_by()
.by() haben wir das dplyr-Verb group_by() und ungroup() verwendet
.by, weil es die Gruppierung lokal hält (keine Notwendigkeit für ungroup())group_by() in freier Wildbahn sehendf_flights %>%
drop_na() %>%
filter(carrier %in% c("UA", "AA")) %>%
group_by(month, carrier) %>%
summarise(mean_air_time = mean(air_time),
mean_distance = mean(distance),
N = n()) %>%
ungroup() %>%
arrange(month, carrier) %>%
head(n = 10) %>%
knitr::kable() %>%
kableExtra::kable_styling(font_size = 20) | month | carrier | mean_air_time | mean_distance | N |
|---|---|---|---|---|
| 1 | AA | 199.5433 | 1353.099 | 2724 |
| 1 | UA | 213.7022 | 1463.894 | 4590 |
| 2 | AA | 197.9195 | 1352.686 | 2399 |
| 2 | UA | 207.4393 | 1437.190 | 4157 |
| 3 | AA | 192.3532 | 1349.525 | 2741 |
| 3 | UA | 204.7959 | 1454.933 | 4909 |
| 4 | AA | 192.9615 | 1343.950 | 2649 |
| 4 | UA | 212.0633 | 1504.828 | 4978 |
| 5 | AA | 183.4554 | 1341.822 | 2749 |
| 5 | UA | 209.1620 | 1559.828 | 4890 |
| grp | mean_x | mean_y | min_x | min_y | max_x | max_y | crrltn |
|---|---|---|---|---|---|---|---|
| Group 1 | 9 | 7.500909 | 4 | 4.26 | 14 | 10.84 | 0.8164205 |
| Group 2 | 9 | 7.500909 | 4 | 3.10 | 14 | 9.26 | 0.8162365 |
| Group 3 | 9 | 7.500000 | 4 | 5.39 | 14 | 12.74 | 0.8162867 |
| Group 4 | 9 | 7.500909 | 8 | 5.25 | 19 | 12.50 | 0.8165214 |
Abbildung 1: Plots of Anscombe’s quratet distributions
datasaurRus enthält einige weitere Datensätze, die ähnliche Mittelwerte und SD, aber unterschiedliche Verteilungen aufweisen| dataset | mean_x | mean_y | std_dev_x | std_dev_y | corr_x_y |
|---|---|---|---|---|---|
| away | 54.26610 | 47.83472 | 16.76983 | 26.93974 | -0.0641284 |
| bullseye | 54.26873 | 47.83082 | 16.76924 | 26.93573 | -0.0685864 |
| circle | 54.26732 | 47.83772 | 16.76001 | 26.93004 | -0.0683434 |
| dino | 54.26327 | 47.83225 | 16.76514 | 26.93540 | -0.0644719 |
| dots | 54.26030 | 47.83983 | 16.76774 | 26.93019 | -0.0603414 |
| h_lines | 54.26144 | 47.83025 | 16.76590 | 26.93988 | -0.0617148 |
| high_lines | 54.26881 | 47.83545 | 16.76670 | 26.94000 | -0.0685042 |
| slant_down | 54.26785 | 47.83590 | 16.76676 | 26.93610 | -0.0689797 |
| slant_up | 54.26588 | 47.83150 | 16.76885 | 26.93861 | -0.0686092 |
| star | 54.26734 | 47.83955 | 16.76896 | 26.93027 | -0.0629611 |
| v_lines | 54.26993 | 47.83699 | 16.76996 | 26.93768 | -0.0694456 |
| wide_lines | 54.26692 | 47.83160 | 16.77000 | 26.93790 | -0.0665752 |
| x_shape | 54.26015 | 47.83972 | 16.76996 | 26.93000 | -0.0655833 |
Abbildung 2: Plots of datasauRus dataset distributions
Stellen Sie Ihre Daten also immer grafisch dar und betrachten Sie nicht nur die beschreibenden Statistiken!!! Beides ist sehr wichtig für das Verständnis Ihrer Daten.
152, 19, 1398, 67, 2111, ohne die Funktion sd() zu benutzen.
c()Mittelwert()x^2 berechnet das Quadrat eines Wertes (hier, x)sqrt() berechnet die QuadratwurzelLänge()sd(), um die Standardabweichung der obigen Werte zu drucken. Haben Sie es richtig gemacht?summarise, um den Mittelwert, die Standardabweichung und die Anzahl der Beobachtungen für dep_delay zu drucken.
NA) entfernen?.by() hinzu, um die Abfahrtsverzögerung (dep_delay) pro Monat zu finden
knitr::kable() und kableExtra::kable_styling())
#| label: tbl-...) und eine Tabellenüberschrift (#| tbl-cap:) einfügen@tbl-...)Heute haben wir…
summarise() von dplyr benutzt ✅Hergestellt mit R version 4.3.0 (2023-04-21) (Already Tomorrow) und RStudioversion 2023.3.0.386 (Cherry Blossom).
R version 4.3.0 (2023-04-21)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.2.1
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Europe/Berlin
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] datasauRus_0.1.6 here_1.0.1 lubridate_1.9.2 forcats_1.0.0
[5] stringr_1.5.0 dplyr_1.1.2 purrr_1.0.1 readr_2.1.4
[9] tidyr_1.3.0 tibble_3.2.1 ggplot2_3.4.2 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] utf8_1.2.3 generics_0.1.3 xml2_1.3.4
[4] lattice_0.21-8 stringi_1.7.12 hms_1.1.3
[7] digest_0.6.31 magrittr_2.0.3 evaluate_0.21
[10] grid_4.3.0 timechange_0.2.0 fastmap_1.1.1
[13] Matrix_1.5-4 rprojroot_2.0.3 jsonlite_1.8.5
[16] mgcv_1.8-42 httr_1.4.6 rvest_1.0.3
[19] fansi_1.0.4 viridisLite_0.4.2 scales_1.2.1
[22] cli_3.6.1 rlang_1.1.1 crayon_1.5.2
[25] splines_4.3.0 bit64_4.0.5 munsell_0.5.0
[28] withr_2.5.0 yaml_2.3.7 tools_4.3.0
[31] parallel_4.3.0 tzdb_0.4.0 colorspace_2.1-0
[34] webshot_0.5.4 pacman_0.5.1 kableExtra_1.3.4.9000
[37] vctrs_0.6.2 R6_2.5.1 lifecycle_1.0.3
[40] bit_4.0.5 vroom_1.6.3 pkgconfig_2.0.3
[43] pillar_1.9.0 gtable_0.3.3 glue_1.6.2
[46] systemfonts_1.0.4 highr_0.10 xfun_0.39
[49] tidyselect_1.2.0 rstudioapi_0.14 knitr_1.43
[52] farver_2.1.1 nlme_3.1-162 htmltools_0.5.5
[55] labeling_0.4.2 svglite_2.1.1 rmarkdown_2.22
[58] compiler_4.3.0
Woche 9 - Deskriptive Statistik